package io.gitee.sfch.chunmi.code.generator.service;

import io.gitee.sfch.chunmi.code.generator.entity.ColumnRef;
import io.gitee.sfch.chunmi.code.generator.entity.JavaType;
import io.gitee.sfch.chunmi.code.generator.entity.TableRef;

import java.util.List;
import java.util.Map;

/**
 * 数据库表元数据服务
 */
public interface TableMetaService {

    /**
     * 支持的驱动名
     */
    String[] supportDriverNames();

    /**
     * 根据表名获取表定义
     *
     * @param schemaName 模式名
     * @param tableName 表名
     */
    TableRef getTableRef(String schemaName, String tableName);

    /**
     * 根据表名获取字段定义
     *
     * @param schemaName 模式名
     * @param tableName 表名
     */
    List<ColumnRef> getColumnRefs(String schemaName, String tableName);

    /**
     * 获取数据库和Java的类型映射
     */
    Map<String, JavaType> getJavaTypeMapping();

    /**
     * 获取数据库和前端类型的映射
     */
    Map<String, String> getWebTypeMapping();
}
